// samsting : this file is auto create.

#ifndef ALIYUN_Ecs_DescribeSnapshotsResponse_H_
#define ALIYUN_Ecs_DescribeSnapshotsResponse_H_

#include "core/acs_response.h"

namespace aliyun { namespace Ecs {

class DescribeSnapshotsResponse : public AcsResponse {
public:
  DescribeSnapshotsResponse();

  class Snapshot {
    friend class DescribeSnapshotsResponse;
  public:

    class Tag {
      friend class DescribeSnapshotsResponse;
      friend class Snapshot;
    public:
      const string& GetTagKey(void) const;
      const string& GetTagValue(void) const;
    private:
      string TagKey_;
      string TagValue_;
    }; // Tag 

    const std::vector<Tag>& GetTags(void) const;
    const string& GetSnapshotId(void) const;
    const string& GetSnapshotName(void) const;
    const string& GetProgress(void) const;
    const string& GetProductCode(void) const;
    const string& GetSourceDiskId(void) const;
    const string& GetSourceDiskType(void) const;
    const string& GetSourceDiskSize(void) const;
    const string& GetDescription(void) const;
    const string& GetCreationTime(void) const;
    const string& GetStatus(void) const;
    const string& GetUsage(void) const;
  private:
    std::vector<Tag> Tags_;
    string SnapshotId_;
    string SnapshotName_;
    string Progress_;
    string ProductCode_;
    string SourceDiskId_;
    string SourceDiskType_;
    string SourceDiskSize_;
    string Description_;
    string CreationTime_;
    string Status_;
    string Usage_;
  }; // Snapshot 

  const std::vector<Snapshot>& GetSnapshots(void) const;
  int  GetTotalCount(void) const;
  int  GetPageNumber(void) const;
  int  GetPageSize(void) const;

private:
  std::vector<Snapshot> Snapshots_;
  int    TotalCount_;
  int    PageNumber_;
  int    PageSize_;

protected:
  const char* BaseKey(void);
  void         UnmarshallerMap(std::map<string, string>& response_map);

};

} } // namespace aliyun { namespace Ecs {

#endif // #ifndef ALIYUN_Ecs_DescribeSnapshotsResponse_H_

// end of file 
